package demo1;

import java.util.ArrayList;
import java.util.List;

/**
 * 具体组件：原始单词读取器（基础功能：提供内存中的原始单词列表）
 */
public class RawWordReader implements WordReader {
    // 内存中的原始单词列表（模拟数据源，含空格、大小写、重复项、空字符串）
    private final List<String> rawWords;

    // 构造器：初始化原始单词列表（支持自定义或使用默认数据）
    public RawWordReader() {
        // 默认原始数据
        this.rawWords = new ArrayList<>();
        rawWords.add(" Apple ");
        rawWords.add("banana");
        rawWords.add(" APPLE ");
        rawWords.add("  Cat  ");
        rawWords.add("dog");
        rawWords.add(""); // 空字符串
        rawWords.add("hi");
        rawWords.add("banana"); // 重复项
        rawWords.add("  Tiger  ");
    }

    // 重载构造器：支持传入自定义原始单词列表
    public RawWordReader(List<String> customRawWords) {
        this.rawWords = new ArrayList<>(customRawWords);
    }

    @Override
    public List<String> readWords() {
        // 返回原始单词列表的副本，避免外部修改数据源
        List<String> result = new ArrayList<>(rawWords);
        System.out.printf("基础读取完成，原始单词数：%d，原始列表：%s%n", result.size(), result);
        return result;
    }
}
